package br.unifor.cg.algoritmos;

import br.unifor.cg.formas.Ponto;

/**
 * Classe que implementa o algoritmo de Bresenham Real
 *
 */
public class BresenhamReal extends Algoritmo{

	/**
	 * Metodo foi sobrescrito para utilizar o algoritmo de Bresenhan Real
	 */
	public void desenhaLinha(Ponto pInicial, Ponto pFinal) {
		double x = pInicial.getX();
		double y = pInicial.getY();
		double deltaX, deltaY = 0;
		double m = 0;
		double e = 0;
		deltaX = (pFinal.getX() - pInicial.getX());
		deltaY = (pFinal.getY() - pInicial.getY());
		m = deltaY / deltaX;
		e = m - 0.5;

		for (int i = 0; i <= (int) Math.round(deltaX); i++) {
			
			desenhaPonto((int) Math.round(x), (int) Math.round(y));
			
			while (e >= 0) {
				y++;
				e--;
			}
			x++;
			e = e + m;
		}
	}

}
